package com.by.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author Ye QS
 * @version 0.1
 * @className WebMvcConfig
 * @description
 * @date 2024/9/6 17:53
 * @since jdk11
 */
@Configuration
// 使用@Configuration注解标记此类为配置类
public class WebMvcConfig implements WebMvcConfigurer {
    // 实现WebMvcConfigurer接口中的addCorsMappings方法以自定义跨域请求策略

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 通过覆写addCorsMappings方法来注册CORS映射规则

        registry.addMapping("/**")
                // 配置全局路径（所有端点）的CORS处理逻辑

                .allowCredentials(false)
                // 设置是否支持凭据共享，默认情况下不允许发送Cookie和HTTP认证信息

                .allowedHeaders("*")
                // 允许访问的所有头部信息，使用通配符表示允许任何头部信息

                .allowedOrigins("*")
                // 指定允许哪些源进行请求，这里的星号代表允许来自任意域名的请求

                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                // 列出允许的具体请求方法类型，包括：GET、POST、PUT、DELETE以及预检请求 OPTIONS

                .maxAge(36000);
        // 设置最长有效时间（秒），在此时间内浏览器会记住该响应结果，相同条件下的后续请求将不会再次发起预检请求
    }

    @Bean
    public StandardServletMultipartResolver multipartResolver() {
        return new StandardServletMultipartResolver();
    }

}